/*
 * @Author: pjji
 * @describe: 脚手架基础配置
 * @LastEditTime: 2020-12-07 17:24:19
 */
'use strict';
const
    path = require('path'),
    glob = require('glob'),
    pages = {};

//多页应用每个页面入口js必须命名为main.js
glob.sync('./src/pages/**/main.js').forEach(path => {
    const chunk = path.split('./src/pages/')[1].split('/main.js')[0];
    console.log(chunk);
    pages[chunk] = {
        entry: 'src/pages/' + chunk + '/main.js',
        template: 'public/index.html',
        filename: chunk + '.html',
        chunks: ['chunk-vendors', 'chunk-common', chunk]
    }
});
//设置代理服务器
const proxy = {};
proxy[process.env.BASE_URL] = {
    target: process.env.VUE_APP_SERVER_API,
    secure: false,
    ws: false,
    changeOrigin: true
};

function resolve(dir) {
    return path.join(__dirname, dir)
}

module.exports = {
    // 静态文件存放
    assetsDir: 'static',
    // 使用带有浏览器内编译器的完整构建版本,是否使用包含运行时编译器的 Vue 构建版本
    runtimeCompiler: true,
    // 是否在构建生产包时生成 sourceMap 文件，false将提高构建速度  映射文件 打包时使用
    // { type:Bollean,default:true } 生产源映射  如果您不需要生产时的源映射，那么将此设置为false可以加速生产构建
    productionSourceMap: false,
    publicPath: process.env.BASE_URL,
    // build输出文件List
    outputDir: "dist",
    //是否在保存时使用‘eslint-loader’进行检查 // 有效值: true | false | 'error' // 当设置为‘error’时，检查出的错误会触发编译失败
    lintOnSave: false,
    //配置源码映射
    configureWebpack: config => {
        if (process.env.NODE_ENV === 'development' && process.env.VUE_APP_SOURCE_MAP === 'true') {
            config.devtool = 'source-map'
        }
    },
    // 调整内部的webpack配置.
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    chainWebpack: config => {
        config.entry('index').add('babel-polyfill')
        config.resolve.alias.set('@', resolve('src'));
        config.resolve.alias.set('@mock', resolve('src/mock'));
        config.resolve.alias.set('@comp', resolve('src/components'));
        Object.keys(pages).forEach(entryName => {
            config.resolve.alias.set('@' + entryName, resolve('src/pages/' + entryName))
        })
    },
    // babel-loader默认会跳过`node_modules`依赖. // 通过这个选项可以显示转译一个依赖
    // 默认babel-loader忽略mode_modules，这里可增加例外的依赖包名
    transpileDependencies: [
        'vue-echarts',
        'element-ui/src', //单独引入element内部组件image-viewer时 ES6语法问题
        'element-ui/packages', //单独引入element内部组件image-viewer时 ES6语法问题
        'resize-detector' //监听元素宽度变化
    ],
    devServer: {
        host: 'localhost',
        port: 8080, // 端口号
        open: true, // 设置是否自动打开浏览器
        // overlay: {
        //     warnings: false,
        //     errors: false
        // },
        proxy
    },
    //全局css
    css: {
        // 是否在构建css样式映射，false将提高构建速度
        sourceMap: false,
        // css预设器配置项
        loaderOptions: {
            sass: {
                data: `@import "@/assets/styles/_global.scss";`
            },
            less: {
                javascriptEnabled: true
            }
        }
    },
    pages
};